在第四堂課就講了資料庫, 但那個只是個概論, 而真的進到 Big Data 或 Data Science, 一個 Data Engineer 就不能只是懂 SQL 或 Relational Database (E-R Model), 因為就 CAP 理論而言, 沒有一種資料庫能夠完全滿足 Consistency, Availablity, 與 Partition Tolerance, 也就是說, 現在的資料庫, 都有其適用的範圍, 不可能只靠一種資料庫就可以應付所有須求.
尤於 SQL 在十幾年前幾乎是資料庫的標準, 而現代的不少 Database 都跳脫 SQL 的規範與局限, 雖說統稱為 NoSQL, 但事實上這些資料庫差異有時是相當大的.
只是很確定的一點, 現在的 Data Engineer 面對的不再是一種資料庫就夠了, 而是透過不同的介接方式, 去串接不同的系統, 而這些系統都有各自不同的資料庫, 雖然你可以假裝不知道背後是甚麼, 但若對其原理與特性有足夠了解, 就能夠設計出更有效率效能的系統.
但也不是你要學會十幾種資料庫, 就 netflix 而例, 會用上的只有六七種資料庫, 當然這部份是分成 Online, Nearline, Offline 這三種角度, 而為了要配合各種不同的情境才會有這樣的設計, 一個工程師也不太可能所有的資料庫都能精通, 只是若無法至少有用過, 有經驗過, 就很危險, 所以這門課與其說是有教科書, 還不如說是實作的經驗比較實際.
"現代" 的資料庫可以分成下面幾種應用與角度:
而以運作的角度可以分成:
或者是有更精確的定義成:
但這些都是種表面, 因為真正的學習就是當你用過, 當你用來開發過, 當你維護過與實用過, 就會了, 這雖然是種苦工, 但還是有其必要性的.
開放課程:
電子書:
關鍵字: